<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // 在 JavaScript 中，typeof 操作符用于检测变量的类型。
    // 虽然我们不能直接用 JavaScript 手动重写原生的 typeof 操作符，
    // 但我们可以实现一个类似的功能来检查变量的类型。

    // typeof 的原理
    //     typeof 返回的是一个字符串，表示操作数的类型。它可以检测以下几种基本类型：

    //     "undefined"
    //     "boolean"
    //     "number"
    //     "string"
    //     "function"
    //     "object"

    // 需要注意的是，typeof 对一些类型的检测存在一些问题：

    //     对 null 返回的是 "object"。
    //     对数组、正则等对象类型也会返回 "object"。

    // 手写 typeof 实现
    //     我们可以根据以下规则来实现一个类似的 typeof：

    //     1.undefined 类型直接检测 undefined。
    //     2.null 检测是否为 null，因为 typeof null 会返回 "object"。
    //     3.function 类型检查 typeof 返回 "function"。
    //     4.object 类型检查，包括对象、数组、日期等。
    //     5.其他基本类型 使用 typeof 本身来判断。


    function myTypeof (value) {
        if (value === null) {
            return 'null'
        }
        let res = Object.prototype.toString.call(value).split(' ')[1]
        res = res.substring(0, res.length - 1).toLowerCase()
        return res
    }

    console.log(myTypeof(1))
</script>
</html>